#ifndef _QUEUE_USR_H
#define _QUEUE_USR_H


//处理按键GPIO 的队列

#define SIZE 512				//512 chars

typedef struct
{
	unsigned char arr[SIZE];
	unsigned short head;		//最前面数字所在下标
	unsigned short tail;		//最后一个有效数字的下一个位置的下标
	unsigned short num; 		//队列里的有效数字个数
	//如果队列里没有数字则head应该就是tail的数值
}queue;



extern queue  key_queue;
extern queue  key_queue_uart;

//队列
void queue_init(queue *p_queue);

//清理队列的函数
void queue_deinit(queue *p_queue);

//计算数字个数的函数
int queue_size(const queue *p_queue);

//判断队列是否为空的函数
int queue_empty(const queue *p_queue);

//判断队列是否为满的函数
int queue_full(const queue *p_queue);

//读入到buf缓存区
int queue_push(queue *p_queue,unsigned char data);

//取出一个数并删除；
unsigned char queue_pop(queue *p_queue );

//取出一个数(读取最前面的一个字节)
unsigned char queue_from(const queue *p_queue);

#endif

